{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9d37fec5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Auto-Sklearn cannot be imported.\n"
     ]
    }
   ],
   "source": [
    "from src.knapsack.initialize_and_Train import Initialize_and_train\n",
    "from src.knapsack.generate_knapsack_data import Gen_Knapsack_data\n",
    "import numpy as np\n",
    "import pickle as pkl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "dda79988",
   "metadata": {},
   "outputs": [],
   "source": [
    "models = ['DYS', 'BBOpt', 'PertOpt'] #'DYS-Regret', 'SPO+', 'BBOpt', 'PertOpt', 'PertOpt-FY']\n",
    "item_values = np.arange(20,65,5)\n",
    "num_repeats = 5\n",
    "results_test_loss = np.zeros((len(models), len(item_values), num_repeats))\n",
    "results_train_time = np.zeros((len(models), len(item_values), num_repeats))\n",
    "results_time_till_val_loss = np.zeros((len(models), len(item_values), num_repeats))\n",
    "\n",
    "data_type = \"x\" # ;x for fitting to solution, w for fitting to costs/values\n",
    "\n",
    "# hard code some data parameters\n",
    "num_knapsack = 2\n",
    "num_feat = 5\n",
    "num_data = 1100\n",
    "\n",
    "# max values\n",
    "max_epochs = 25\n",
    "# max time hardcoded to 30 minutes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7fb14fc4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating training data for knapsack problem with 2 knapsacks and 20 items\n",
      "Restricted license - for non-production use only - expires 2024-10-28\n",
      "Optimizing for optDataset...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 900/900 [00:00<00:00, 960.25it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimizing for optDataset...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 100/100 [00:00<00:00, 769.23it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimizing for optDataset...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 100/100 [00:00<00:00, 795.99it/s]\n",
      "/Users/danielmckenzie/My-Drive/Research/Fixed_Point_Networks/Diff-Opt-Over-Polytopes-Project/SPO_with_DYS/src/knapsack/dYS_opt_net.py:29: UserWarning: The operator 'aten::linalg_svd' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications. (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/mps/MPSFallback.mm:11.)\n",
      "  U, s, VT = torch.linalg.svd(self.A, full_matrices=False)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Finished building dataset\n",
      "\n",
      " Currently training DYS\n",
      "\n",
      "Initial validation loss is  0.4501650035381317\n",
      "Best validation loss achieved at epoch 1\n",
      "epoch:  1 validation loss is  0.12508250772953033 epoch time:  1.5205490589141846\n",
      "Best validation loss achieved at epoch 2\n",
      "epoch:  2 validation loss is  0.08217822015285492 epoch time:  1.421820878982544\n",
      "epoch:  3 validation loss is  0.08547854423522949 epoch time:  1.3318161964416504\n",
      "Best validation loss achieved at epoch 4\n",
      "epoch:  4 validation loss is  0.07590758800506592 epoch time:  1.2908961772918701\n",
      "Best validation loss achieved at epoch 5\n",
      "epoch:  5 validation loss is  0.07491748780012131 epoch time:  1.3294978141784668\n",
      "Best validation loss achieved at epoch 6\n",
      "epoch:  6 validation loss is  0.07425742596387863 epoch time:  1.3557250499725342\n",
      "epoch:  7 validation loss is  0.08052805811166763 epoch time:  1.3679349422454834\n",
      "Best validation loss achieved at epoch 8\n",
      "epoch:  8 validation loss is  0.0712871253490448 epoch time:  1.3518319129943848\n",
      "epoch:  9 validation loss is  0.10627062618732452 epoch time:  1.3904328346252441\n",
      "epoch:  10 validation loss is  0.10990098863840103 epoch time:  1.3304088115692139\n",
      "epoch:  11 validation loss is  0.11089108884334564 epoch time:  1.356217861175537\n",
      "epoch:  12 validation loss is  0.10924091935157776 epoch time:  1.3676228523254395\n",
      "epoch:  13 validation loss is  0.11089108884334564 epoch time:  1.3205039501190186\n",
      "epoch:  14 validation loss is  0.11386138200759888 epoch time:  1.3574509620666504\n",
      "epoch:  15 validation loss is  0.1221122071146965 epoch time:  1.3545589447021484\n",
      "epoch:  16 validation loss is  0.10627062618732452 epoch time:  1.3209080696105957\n",
      "epoch:  17 validation loss is  0.10495048761367798 epoch time:  1.3211219310760498\n",
      "epoch:  18 validation loss is  0.11683168262243271 epoch time:  1.3296771049499512\n",
      "epoch:  19 validation loss is  0.09900990128517151 epoch time:  1.3452129364013672\n",
      "epoch:  20 validation loss is  0.09603960067033768 epoch time:  1.3536362648010254\n",
      "epoch:  21 validation loss is  0.11716171354055405 epoch time:  1.3605189323425293\n",
      "epoch:  22 validation loss is  0.10099009424448013 epoch time:  1.358144998550415\n",
      "epoch:  23 validation loss is  0.1158415824174881 epoch time:  1.3616490364074707\n",
      "epoch:  24 validation loss is  0.10231022536754608 epoch time:  1.340486764907837\n",
      "epoch:  25 validation loss is  0.09603960067033768 epoch time:  1.3267028331756592\n",
      "\n",
      " Currently training BBOpt\n",
      "\n",
      "Num of cores: 1\n",
      "Initial validation loss is  0.4501650035381317\n",
      "Best validation loss achieved at epoch 1\n",
      "epoch:  1 validation loss is  0.44884487986564636 epoch time:  1.317183017730713\n",
      "epoch:  2 validation loss is  0.45577555894851685 epoch time:  1.3499629497528076\n",
      "epoch:  3 validation loss is  0.49603959918022156 epoch time:  1.3700010776519775\n",
      "epoch:  4 validation loss is  0.5151814818382263 epoch time:  1.391319990158081\n",
      "epoch:  5 validation loss is  0.5237623453140259 epoch time:  1.339726209640503\n",
      "epoch:  6 validation loss is  0.5046204328536987 epoch time:  1.3233458995819092\n",
      "epoch:  7 validation loss is  0.5168316960334778 epoch time:  1.2156457901000977\n",
      "epoch:  8 validation loss is  0.47623759508132935 epoch time:  1.0745441913604736\n",
      "Best validation loss achieved at epoch 9\n",
      "epoch:  9 validation loss is  0.42574256658554077 epoch time:  0.9522318840026855\n",
      "Best validation loss achieved at epoch 10\n",
      "epoch:  10 validation loss is  0.35082510113716125 epoch time:  0.8176381587982178\n",
      "epoch:  11 validation loss is  0.4597359597682953 epoch time:  0.9308822154998779\n",
      "epoch:  12 validation loss is  0.514851450920105 epoch time:  0.8737099170684814\n",
      "epoch:  13 validation loss is  0.5547854900360107 epoch time:  0.7935390472412109\n",
      "epoch:  14 validation loss is  0.567986786365509 epoch time:  0.9845209121704102\n",
      "epoch:  15 validation loss is  0.5851485133171082 epoch time:  0.8615012168884277\n",
      "epoch:  16 validation loss is  0.583828330039978 epoch time:  0.8630006313323975\n",
      "epoch:  17 validation loss is  0.5848184823989868 epoch time:  0.8665552139282227\n",
      "epoch:  18 validation loss is  0.5854785442352295 epoch time:  0.8917539119720459\n",
      "epoch:  19 validation loss is  0.5947194695472717 epoch time:  0.968425989151001\n",
      "epoch:  20 validation loss is  0.5996699929237366 epoch time:  1.0767040252685547\n",
      "epoch:  21 validation loss is  0.6036303043365479 epoch time:  1.1503181457519531\n",
      "epoch:  22 validation loss is  0.5937293767929077 epoch time:  1.161855936050415\n",
      "epoch:  23 validation loss is  0.5966996550559998 epoch time:  1.1284563541412354\n",
      "epoch:  24 validation loss is  0.5834983587265015 epoch time:  0.9484210014343262\n",
      "epoch:  25 validation loss is  0.5663366317749023 epoch time:  0.7854859828948975\n",
      "\n",
      " Currently training PertOpt\n",
      "\n",
      "Num of cores: 1\n",
      "Initial validation loss is  0.4501650035381317\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[3], line 13\u001b[0m\n\u001b[1;32m     11\u001b[0m knapsack_dict \u001b[39m=\u001b[39m Gen_Knapsack_data(num_data, num_feat, num_item, num_knapsack)\n\u001b[1;32m     12\u001b[0m \u001b[39mfor\u001b[39;00m model_counter, model_type \u001b[39min\u001b[39;00m \u001b[39menumerate\u001b[39m(models):\n\u001b[0;32m---> 13\u001b[0m     train_time, best_test_loss, time_till_best_test_loss \u001b[39m=\u001b[39m Initialize_and_train(knapsack_dict, knapsack_data_dict, model_type, data_type, max_epochs, device\u001b[39m=\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39mmps\u001b[39;49m\u001b[39m'\u001b[39;49m)\n\u001b[1;32m     14\u001b[0m     results_test_loss[model_counter, item_counter, repeat] \u001b[39m=\u001b[39m best_test_loss\n\u001b[1;32m     15\u001b[0m     results_train_time[model_counter, item_counter, repeat] \u001b[39m=\u001b[39m train_time\n",
      "File \u001b[0;32m~/My-Drive/Research/Fixed_Point_Networks/Diff-Opt-Over-Polytopes-Project/SPO_with_DYS/src/knapsack/initialize_and_Train.py:44\u001b[0m, in \u001b[0;36mInitialize_and_train\u001b[0;34m(knapsack_dict, knapsack_data_dict, model_type, data_type, max_epochs, learning_rate, device)\u001b[0m\n\u001b[1;32m     42\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m'\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m Currently training \u001b[39m\u001b[39m'\u001b[39m \u001b[39m+\u001b[39m model_type \u001b[39m+\u001b[39m \u001b[39m'\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m'\u001b[39m)\n\u001b[1;32m     43\u001b[0m \u001b[39mif\u001b[39;00m data_type \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mx\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[0;32m---> 44\u001b[0m     test_loss_hist, epoch_time_hist, best_test_loss, time_till_best_test_loss \u001b[39m=\u001b[39m Trainer_x(net, dataset_train, dataset_test, dataset_val, num_item, num_knapsack, max_epochs, learning_rate, model_type \u001b[39m=\u001b[39;49m model_type, device\u001b[39m=\u001b[39;49mdevice)\n\u001b[1;32m     45\u001b[0m \u001b[39melif\u001b[39;00m data_type \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mw\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m     46\u001b[0m     test_loss_hist, epoch_time_hist, best_test_loss, time_till_best_test_loss \u001b[39m=\u001b[39m Trainer_w(net, dataset_train, dataset_test, dataset_val, num_item, num_knapsack, max_epochs, learning_rate, model_type \u001b[39m=\u001b[39m model_type, device\u001b[39m=\u001b[39mdevice)\n",
      "File \u001b[0;32m~/My-Drive/Research/Fixed_Point_Networks/Diff-Opt-Over-Polytopes-Project/SPO_with_DYS/src/knapsack/trainer_x.py:105\u001b[0m, in \u001b[0;36mTrainer_x\u001b[0;34m(net, train_dataset, test_dataset, val_dataset, num_item, num_knapsack, max_epochs, learning_rate, model_type, device)\u001b[0m\n\u001b[1;32m    103\u001b[0m     loss \u001b[39m=\u001b[39m criterion(opt_sol, x_predicted)\n\u001b[1;32m    104\u001b[0m \u001b[39melif\u001b[39;00m model_type \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mPertOpt\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[0;32m--> 105\u001b[0m     x_predicted \u001b[39m=\u001b[39m ptb(predicted)\n\u001b[1;32m    106\u001b[0m     loss \u001b[39m=\u001b[39m criterion(opt_sol, x_predicted)\n\u001b[1;32m    108\u001b[0m loss\u001b[39m.\u001b[39mbackward()\n",
      "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/torch/nn/modules/module.py:1194\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m   1190\u001b[0m \u001b[39m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1191\u001b[0m \u001b[39m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1192\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m (\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_backward_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_forward_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_forward_pre_hooks \u001b[39mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1193\u001b[0m         \u001b[39mor\u001b[39;00m _global_forward_hooks \u001b[39mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1194\u001b[0m     \u001b[39mreturn\u001b[39;00m forward_call(\u001b[39m*\u001b[39;49m\u001b[39minput\u001b[39;49m, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m   1195\u001b[0m \u001b[39m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1196\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[39m=\u001b[39m [], []\n",
      "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyepo/func/perturbed.py:84\u001b[0m, in \u001b[0;36mperturbedOpt.forward\u001b[0;34m(self, pred_cost)\u001b[0m\n\u001b[1;32m     80\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mforward\u001b[39m(\u001b[39mself\u001b[39m, pred_cost):\n\u001b[1;32m     81\u001b[0m \u001b[39m    \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m     82\u001b[0m \u001b[39m    Forward pass\u001b[39;00m\n\u001b[1;32m     83\u001b[0m \u001b[39m    \"\"\"\u001b[39;00m\n\u001b[0;32m---> 84\u001b[0m     sols \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mptb\u001b[39m.\u001b[39;49mapply(pred_cost, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49moptmodel, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mn_samples,\n\u001b[1;32m     85\u001b[0m                           \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msigma, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mprocesses, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mpool, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrnd,\n\u001b[1;32m     86\u001b[0m                           \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msolve_ratio, \u001b[39mself\u001b[39;49m)\n\u001b[1;32m     87\u001b[0m     \u001b[39mreturn\u001b[39;00m sols\n",
      "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyepo/func/perturbed.py:125\u001b[0m, in \u001b[0;36mperturbedOptFunc.forward\u001b[0;34m(ctx, pred_cost, optmodel, n_samples, sigma, processes, pool, rnd, solve_ratio, module)\u001b[0m\n\u001b[1;32m    123\u001b[0m rand_sigma \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mrandom\u001b[39m.\u001b[39muniform()\n\u001b[1;32m    124\u001b[0m \u001b[39mif\u001b[39;00m rand_sigma \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m solve_ratio:\n\u001b[0;32m--> 125\u001b[0m     ptb_sols \u001b[39m=\u001b[39m _solve_in_forward(ptb_c, optmodel, processes, pool)\n\u001b[1;32m    126\u001b[0m     \u001b[39mif\u001b[39;00m solve_ratio \u001b[39m<\u001b[39m \u001b[39m1\u001b[39m:\n\u001b[1;32m    127\u001b[0m         sols \u001b[39m=\u001b[39m ptb_sols\u001b[39m.\u001b[39mreshape(\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m, cp\u001b[39m.\u001b[39mshape[\u001b[39m1\u001b[39m])\n",
      "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyepo/func/perturbed.py:317\u001b[0m, in \u001b[0;36m_solve_in_forward\u001b[0;34m(ptb_c, optmodel, processes, pool)\u001b[0m\n\u001b[1;32m    314\u001b[0m \u001b[39mfor\u001b[39;00m j \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(n_samples):\n\u001b[1;32m    315\u001b[0m     \u001b[39m# solve\u001b[39;00m\n\u001b[1;32m    316\u001b[0m     optmodel\u001b[39m.\u001b[39msetObj(ptb_c[j,i])\n\u001b[0;32m--> 317\u001b[0m     sol, _ \u001b[39m=\u001b[39m optmodel\u001b[39m.\u001b[39;49msolve()\n\u001b[1;32m    318\u001b[0m     sols\u001b[39m.\u001b[39mappend(sol)\n\u001b[1;32m    319\u001b[0m ptb_sols\u001b[39m.\u001b[39mappend(sols)\n",
      "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyepo/model/grb/grbmodel.py:58\u001b[0m, in \u001b[0;36moptGrbModel.solve\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m     56\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_model\u001b[39m.\u001b[39mupdate()\n\u001b[1;32m     57\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_model\u001b[39m.\u001b[39moptimize()\n\u001b[0;32m---> 58\u001b[0m \u001b[39mreturn\u001b[39;00m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mx[k]\u001b[39m.\u001b[39mx \u001b[39mfor\u001b[39;00m k \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mx], \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_model\u001b[39m.\u001b[39mobjVal\n",
      "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyepo/model/grb/grbmodel.py:58\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m     56\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_model\u001b[39m.\u001b[39mupdate()\n\u001b[1;32m     57\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_model\u001b[39m.\u001b[39moptimize()\n\u001b[0;32m---> 58\u001b[0m \u001b[39mreturn\u001b[39;00m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mx[k]\u001b[39m.\u001b[39mx \u001b[39mfor\u001b[39;00m k \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mx], \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_model\u001b[39m.\u001b[39mobjVal\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "for item_counter, num_item in enumerate(item_values):\n",
    "    knapsack_data_dict = {'num_knapsack': num_knapsack,\n",
    "                          'num_item': num_item,\n",
    "                          'num_feat': num_feat,\n",
    "                          'num_data': num_data\n",
    "                         } \n",
    "    \n",
    "    # Do the thing\n",
    "    for repeat in range(num_repeats):\n",
    "        # Generate Data\n",
    "        knapsack_dict = Gen_Knapsack_data(num_data, num_feat, num_item, num_knapsack)\n",
    "        for model_counter, model_type in enumerate(models):\n",
    "            train_time, best_test_loss, time_till_best_test_loss = Initialize_and_train(knapsack_dict, knapsack_data_dict, model_type, data_type, max_epochs, device='mps')\n",
    "            results_test_loss[model_counter, item_counter, repeat] = best_test_loss\n",
    "            results_train_time[model_counter, item_counter, repeat] = train_time\n",
    "            results_time_till_val_loss[model_counter, item_counter, repeat] = time_till_best_test_loss\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2a93c416",
   "metadata": {},
   "outputs": [],
   "source": [
    "## Prepare for plotting\n",
    "results_test_loss_mean = np.mean(results_test_loss, axis=2)\n",
    "results_test_loss_max = np.max(results_test_loss, axis=2)\n",
    "results_test_loss_min = np.min(results_test_loss, axis=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "05239ec3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Dump to CSV for plotting\n",
    "plotting_dir = \"./plot_data/\"\n",
    "for idx, model_type in enumerate(models):\n",
    "    np.savetxt(plotting_dir + 'results_regret' + model_type+'mean.csv',np.column_stack([item_values, results_test_loss_mean[idx,:]]), delimiter=\",\" )\n",
    "    np.savetxt(plotting_dir + 'results_regret' + model_type+'min.csv',np.column_stack([item_values, results_test_loss_min[idx,:]]), delimiter=\",\" )\n",
    "    np.savetxt(plotting_dir + 'results_regret' + model_type+'max.csv',np.column_stack([item_values, results_test_loss_max[idx,:]]), delimiter=\",\" )\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "00be30e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9UklEQVR4nO3deXhU5cE28Puc2ffsCYQAEnaQRTZRUVEUrdraarXaKqK1tdVWi13Uvp9oW8VWbbWuVV+1r7u27q1Qi2LVqgiIiuwKhC0bkG32Oef5/nhmJhmSQJZJzszk/l3XXJk5c2bmOZlkzj3PqgghBIiIiIgMohpdACIiIhrYGEaIiIjIUAwjREREZCiGESIiIjIUwwgREREZimGEiIiIDMUwQkRERIZiGCEiIiJDMYwQERGRoRhGiIjiFEXBVVddddj9Hn/8cSiKgu3bt/d9oXropptugqIoRheDqEsYRogOI3HiaXspKSnB3Llz8cYbb/TZ6wYCAdx0001YsWJFl/ZfsWJFShlNJhNKSkpw7rnnYsOGDX1WznS69dZb8fLLL3f7cRs2bICiKLDb7WhoaEh7uYiobzGMEHXRb37zGzzxxBP4v//7P/zyl79EXV0dvva1r+H111/vk9cLBAK4+eabuxxGEn7605/iiSeewCOPPILvfve7+Mc//oE5c+agurq6T8qZTj0NI08++STKysoAAH/729/SXKr2LrroIgSDQQwbNqzPX4toIDAbXQCibHH66adj+vTpyduXXXYZSktL8cwzz+DMM880sGSp5syZg3PPPTd5e8yYMfjRj36UDFH9KRAIwOl09ulrCCHw9NNP48ILL8S2bdvw1FNP4fvf/36fvqbJZILJZOrT1yAaSFgzQtRDeXl5cDgcMJtTM72u67jrrrswYcIE2O12lJaW4oc//CEOHDiQst+qVaswf/58FBUVweFw4IgjjsCll14KANi+fTuKi4sBADfffHOy6eWmm27qdjnnzJkDAPjyyy9Ttu/evRuXXnopSktLYbPZMGHCBDz66KPtHr9jxw58/etfh8vlQklJCX72s59h2bJlUBQlpdbmxBNPxMSJE7F69Wocf/zxcDqduOGGGwAA4XAYixcvxsiRI2Gz2VBRUYFf/vKXCIfDyccrigK/34+//vWvyeO95JJLDnt877//PrZv347vfOc7+M53voP//Oc/2LVrV7v9dF3H3XffjSOPPBJ2ux3FxcU47bTTsGrVqnb7vvzyy5g4cWLy97J06dKU+zvrM/LGG29gzpw5cLlc8Hg8OOOMM/DFF18k77/jjjugKAp27NjR7jWvv/56WK3WlL+Tjz76CKeddhp8Ph+cTidOOOEEvP/+++0e+95772HGjBmw2+2orKzEX/7yl8P+3ogyCWtGiLqosbER9fX1EEKgtrYW99xzD1paWvC9730vZb8f/vCHePzxx7Fw4UL89Kc/xbZt23Dvvffik08+wfvvvw+LxYLa2lqceuqpKC4uxnXXXYe8vDxs374dL774IgCguLgYDzzwAH70ox/hm9/8Jr71rW8BACZNmtTtcidOmPn5+cltNTU1OProo5MdNouLi/HGG2/gsssuQ1NTE6655hoAgN/vx0knnYS9e/fi6quvRllZGZ5++mm8/fbbHb7Wvn37cPrpp+M73/kOvve976G0tBS6ruPrX/863nvvPfzgBz/AuHHj8Pnnn+NPf/oTNm/enGyWeeKJJ/D9738fM2fOxA9+8AMAQGVl5WGP76mnnkJlZSVmzJiBiRMnwul04plnnsEvfvGLlP0uu+wyPP744zj99NPx/e9/H7FYDO+++y4+/PDDlBqv9957Dy+++CJ+/OMfw+Px4M9//jPOOeccVFVVobCwsNNyPPHEE1iwYAHmz5+P3//+9wgEAnjggQdw3HHH4ZNPPsHw4cNx3nnn4Ze//CWef/75duV7/vnnceqppybfp7feegunn346pk2bhsWLF0NVVTz22GM46aST8O6772LmzJkAgM8//zz5t3TTTTchFoth8eLFKC0tPezvjihjCCI6pMcee0wAaHex2Wzi8ccfT9n33XffFQDEU089lbJ96dKlKdtfeuklAUB8/PHHnb5uXV2dACAWL17cpXK+/fbbAoB49NFHRV1dndizZ49YunSpGDlypFAURaxcuTK572WXXSYGDRok6uvrU57jO9/5jvD5fCIQCAghhLjzzjsFAPHyyy8n9wkGg2Ls2LECgHj77beT20844QQBQDz44IMpz/nEE08IVVXFu+++m7L9wQcfFADE+++/n9zmcrnEggULunS8QggRiUREYWGh+PWvf53cduGFF4rJkyen7PfWW28JAOKnP/1pu+fQdT15HYCwWq1i69atyW2ffvqpACDuueee5LbE38S2bduEEEI0NzeLvLw8cfnll6c8d3V1tfD5fCnbZ8+eLaZNm5ay38qVKwUA8X//93/JMo0aNUrMnz8/pXyBQEAcccQR4pRTTkluO/vss4Xdbhc7duxIblu/fr0wmUyCH/GULdhMQ9RF9913H9588028+eabePLJJzF37lx8//vfT9ZmAMALL7wAn8+HU045BfX19cnLtGnT4Ha7kzUKeXl5AIDXX38d0Wg0reW89NJLUVxcjMGDB+O0005DY2MjnnjiCcyYMQOA7GPx97//HWeddRaEECnlnD9/PhobG7FmzRoAwNKlS1FeXo6vf/3ryee32+24/PLLO3xtm82GhQsXpmx74YUXMG7cOIwdOzbltU466SQA6LSWpSveeOMN7Nu3DxdccEFy2wUXXIBPP/00pXnk73//OxRFweLFi9s9x8HDX+fNm5dSIzNp0iR4vV589dVXnZbjzTffRENDAy644IKUYzSZTJg1a1bKMZ5//vlYvXp1SrPZc889B5vNhm984xsAgLVr12LLli248MILsW/fvuTz+f1+nHzyyfjPf/4DXdehaRqWLVuGs88+G0OHDk0+37hx4zB//vyu/AqJMgKbaYi6aObMmSnV+RdccAGmTp2Kq666CmeeeSasViu2bNmCxsZGlJSUdPgctbW1AIATTjgB55xzDm6++Wb86U9/woknnoizzz4bF154IWw2W6/KeeONN2LOnDloaWnBSy+9hGeffRaq2vq9o66uDg0NDXjooYfw0EMPHbKcO3bsQGVlZbsT9siRIzt8XHl5OaxWa8q2LVu2YMOGDck+MJ29Vk88+eSTOOKII2Cz2bB161YAsmnH6XTiqaeewq233gpA9pcZPHgwCgoKDvucbU/qCfn5+e36/LS1ZcsWAEgGrIN5vd7k9W9/+9tYtGgRnnvuOdxwww0QQuCFF17A6aefntwv8XwLFizo9DUbGxsRDocRDAYxatSodvePGTMG//znPzt9PFEmYRgh6iFVVTF37lzcfffd2LJlCyZMmABd11FSUoKnnnqqw8ckTsiKouBvf/sbPvzwQ7z22mtYtmwZLr30Utx555348MMP4Xa7e1yuI488EvPmzQMAnH322QgEArj88stx3HHHoaKiArquAwC+973vdXqy60nfFABwOBzttum6jiOPPBJ//OMfO3xMRUVFj16rqakJr732GkKhUIcn46effhq33HJLtyf+6myUjBCi08ckfqdPPPFEcohxW207OQ8ePBhz5szB888/jxtuuAEffvghqqqq8Pvf/77d891+++2YMmVKh6/pdrtTOgATZTOGEaJeiMViAICWlhYA8lv5v//9bxx77LEdnpgPdvTRR+Poo4/GLbfcgqeffhrf/e538eyzz+L73/9+2mbPvO222/DSSy/hlltuwYMPPoji4mJ4PB5ompYMLZ0ZNmwY1q9fDyFESnkStRBdUVlZiU8//RQnn3zyYY+pO8f84osvIhQK4YEHHkBRUVHKfZs2bcL//M//4P3338dxxx2HyspKLFu2DPv37+9S7Uh3JZp1SkpKDvs7BWRTzY9//GNs2rQJzz33HJxOJ84666x2z+f1eg/5fMXFxXA4HMmalLY2bdrU3cMgMgz7jBD1UDQaxb/+9S9YrVaMGzcOAHDeeedB0zT89re/bbd/LBZLzg564MCBdt+0E9+AE992E/Nz9HZG0crKSpxzzjl4/PHHUV1dDZPJhHPOOQd///vfsW7dunb719XVJa/Pnz8fu3fvxquvvprcFgqF8PDDD3f59c877zzs3r27w8cEg0H4/f7kbZfL1eXjffLJJzFixAhcccUVOPfcc1MuP//5z+F2u5M1VOeccw6EELj55pvbPc+hajy6av78+fB6vbj11ls77APU9neaKI/JZMIzzzyDF154AWeeeSZcLlfy/mnTpqGyshJ33HFHMuh29Hwmkwnz58/Hyy+/jKqqquT9GzZswLJly3p9XET9hTUjRF30xhtvYOPGjQBkP4enn34aW7ZswXXXXZds6z/hhBPwwx/+EEuWLMHatWtx6qmnwmKxYMuWLXjhhRdw991349xzz8Vf//pX3H///fjmN7+JyspKNDc34+GHH4bX68XXvvY1ALLJY/z48XjuuecwevRoFBQUYOLEiZg4cWK3y/6LX/wCzz//PO666y7cdtttuO222/D2229j1qxZuPzyyzF+/Hjs378fa9aswb///W/s378fgBymfO+99+KCCy7A1VdfjUGDBuGpp56C3W4H0LWajIsuugjPP/88rrjiCrz99ts49thjoWkaNm7ciOeffx7Lli1L9sWZNm0a/v3vf+OPf/wjBg8ejCOOOAKzZs1q95x79uzB22+/jZ/+9KcdvqbNZsP8+fPxwgsv4M9//jPmzp2Liy66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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "for idx, model_type in enumerate(models):\n",
    "    plt.plot(item_values, results_test_loss_mean[idx,:], label=model_type)\n",
    "    plt.fill_between(item_values, results_test_loss_min[idx,:], results_test_loss_max[idx,:], alpha=.2)\n",
    "\n",
    "plt.title(\"Best Regret Achieved\")\n",
    "plt.legend()\n",
    "plt.savefig('Knapsack_experiment_varying_num_items_regret_60.png')\n",
    "plt.show()\n",
    "\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "333c9f74",
   "metadata": {},
   "outputs": [],
   "source": [
    "results_time_till_val_loss_mean = np.mean(results_time_till_val_loss, axis=2)\n",
    "results_time_till_val_loss_min = np.min(results_time_till_val_loss, axis=2)\n",
    "results_time_till_val_loss_max = np.max(results_time_till_val_loss, axis=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8db5bb37",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Dump to CSV for plotting\n",
    "plotting_dir = \"./plot_data/\"\n",
    "for idx, model_type in enumerate(models):\n",
    "    np.savetxt(plotting_dir + 'results_time_till_best_val_loss' + model_type+'mean.csv',np.column_stack([item_values, results_time_till_val_loss_mean[idx,:]]), delimiter=\",\" )\n",
    "    np.savetxt(plotting_dir + 'results_time_till_best_val_loss' + model_type+'min.csv',np.column_stack([item_values, results_time_till_val_loss_min[idx,:]]), delimiter=\",\" )\n",
    "    np.savetxt(plotting_dir + 'results_time_till_best_val_loss' + model_type+'max.csv',np.column_stack([item_values, results_time_till_val_loss_max[idx,:]]), delimiter=\",\" )\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "145d2f03",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 DYS\n",
      "1 BBOpt\n",
      "2 PertOpt\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for idx, model_type in enumerate(models):\n",
    "    plt.semilogy(item_values, results_time_till_val_loss_mean[idx,:], label=model_type)\n",
    "    plt.fill_between(item_values, results_time_till_val_loss_min[idx,:], results_time_till_val_loss_max[idx,:], alpha=.2)\n",
    "\n",
    "plt.title(\"Train Time\")\n",
    "plt.legend()\n",
    "plt.savefig('Knapsack_experiment_varying_num_items_train_time_60.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "623651d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "results_dict = {\"item_values\": item_values,\n",
    "                \"models\": models,\n",
    "                \"data_type\": data_type,\n",
    "                \"results_test_loss\": results_test_loss,\n",
    "                \"results_train_time\": results_train_time,\n",
    "                \"results_time_till_val_loss\": results_time_till_val_loss,\n",
    "                }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e95b1a2b",
   "metadata": {},
   "outputs": [],
   "source": [
    "pkl.dump( results_dict, open( \"results_x_knapsack.p\", \"wb\" ) )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
